//Random Game Engine
//Copyright (C) 2013  Nikolay Dionisov

//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with this program.  If not, see <http://www.gnu.org/licenses/>.

#include "RandomEngine.h"


namespace re
{
	namespace core
	{
		void RandomEngine::Run(ILogic* logic)
		{
			if(logic == NULL)
			{
				return;
			}
			//Pass managers to the framework so it can freely call them
			//Initialize the ones that need help
			framework_.InitializeManagers(&managers_);
			//Ask the logic which level/scene we shoud load
			//also let it add itself in the sheduler with the appropriate
			//priority.
			framework_.RunLogic(logic);
			//Start updating and doing cycles
			framework_.MainLoop();
			//clear the system resources
			framework_.ShutDown();
		}

	}
}